home *** CD-ROM | disk | FTP | other *** search
/ Nebula 2 / Nebula Two.iso / SourceCode / MiscKit1.7.1 / MiscKit / Palettes / MiscSwapKitPalette / MiscSwapKitPalette.m < prev    next >
Text File  |  1995-04-12  |  2KB  |  84 lines

  1. // Copyright (C) 1995
  2. // Use is governed by the MiscKit license
  3.  
  4. #import "MiscSwapKitPalette.h"
  5.  
  6. @implementation MiscSwapKitPalette
  7.  
  8.  
  9. - finishInstantiate 
  10. {    
  11.     id    idBundle;
  12.     char buf[MAXPATHLEN + 1];
  13.  
  14.     // Put the image on the button that will represent the controller
  15.     // on the palette, then associate it with the object that is the
  16.     // real controller.
  17.     
  18.     [super finishInstantiate];
  19.     
  20.     idBundle = [NXBundle bundleForClass:[self class]];
  21.  
  22.     if ([idBundle getPath:buf forResource:"MiscSCC" ofType:"tiff"])
  23.         [swapImageView setImage:[ [NXImage alloc] initFromFile:buf] ];
  24.      
  25.     [self associateObject:realSwapObject 
  26.         type:IBObjectPboardType with:swapImageView];
  27.         
  28.     return self;
  29. }
  30.  
  31. @end
  32.  
  33.  
  34. @implementation MiscSwapView (IBDisplaying)
  35.  
  36. // Displays a bezel around the view and writes their class name
  37. // in the center to identify subclasses, since otherwise you cannot
  38. // even see where the view is (on the palette and after being dragged).
  39.  
  40. - drawSelf:(const NXRect *)rects :(int)rectCount
  41. {
  42.       if ([NXApp conformsTo: @protocol(IB)])
  43.         if ([NXApp isTestingInterface] == NO)
  44.         {
  45.           id  font = [Font boldSystemFontOfSize: 12.0 
  46.                           matrix: NX_IDENTITYMATRIX];            
  47.           float  x;
  48.             float  gray = [self backgroundGray];
  49.             float  grays[4] = {NX_BLACK, NX_DKGRAY, NX_LTGRAY, NX_WHITE};
  50.           int  i = 0;
  51.           char  *className = (char *)[ [self class] name];
  52.           NXRect  indent;
  53.           
  54.               while (i<4 && gray != grays[i])
  55.                 i++;
  56.  
  57.             // fill background with same color as will be used at runtime
  58.             PSsetgray (gray);
  59.             NXRectFill (&bounds);
  60.             
  61.             // choose an offset gray for border and text
  62.             PSsetgray (grays[(i+2)%3]);
  63.             NX_X (&indent) = NX_X (&bounds) + 2.0;
  64.             NX_Y (&indent) = NX_Y (&bounds) + 2.0;
  65.             NX_WIDTH (&indent) = NX_WIDTH (&bounds) - 4.0;
  66.             NX_HEIGHT (&indent) = NX_HEIGHT (&bounds) - 4.0;
  67.             NXFrameRect (&indent);
  68.  
  69.             [font set];
  70.             if ([font getWidthOf: className] > indent.size.width)
  71.                 x = 10.0;
  72.             else
  73.                 x = (indent.size.width - [font getWidthOf: className])/2; 
  74.             PSmoveto (x, (indent.size.height-[font pointSize])/2);
  75.             PSshow (className);
  76.          }
  77.     else
  78.         [self swapContentView: [self trigger] ];
  79.          
  80.     return self;
  81. }
  82.  
  83. @end
  84.